/********************************************************************* * * Copyright (C) 2002 Andrew Khan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ***************************************************************************/ package jxl.biff.drawing; import java.io.IOException; import jxl.write.biff.File; /** * Interface for the various object types that can be added to a drawing * group */ public interface DrawingGroupObject { /** * Sets the object id. Invoked by the drawing group when the object is * added to id * * @param objid the object id * @param bip the blip id * @param sid the shape id */ void setObjectId(int objid, int bip, int sid); /** * Accessor for the object id * * @return the object id */ int getObjectId(); /** * Accessor for the blip id * * @return the blip id */ int getBlipId(); /** * Accessor for the shape id * * @return the shape id */ public int getShapeId(); /** * Gets the drawing record which was read in * * @return the drawing record */ MsoDrawingRecord getMsoDrawingRecord(); /** * Creates the main Sp container for the drawing * * @return the SP container */ public EscherContainer getSpContainer(); /** * Sets the drawing group for this drawing. Called by the drawing group * when this drawing is added to it * * @param dg the drawing group */ void setDrawingGroup(DrawingGroup dg); /** * Accessor for the drawing group * * @return the drawing group */ DrawingGroup getDrawingGroup(); /** * Gets the origin of this drawing * * @return where this drawing came from */ Origin getOrigin(); /** * Accessor for the reference count on this drawing * * @return the reference count */ int getReferenceCount(); /** * Sets the new reference count on the drawing * * @param r the new reference count */ void setReferenceCount(int r); /** * Accessor for the column of this drawing * * @return the column */ public double getX(); /** * Sets the column position of this drawing * * @param x the column */ public void setX(double x); /** * Accessor for the row of this drawing * * @return the row */ public double getY(); /** * Accessor for the row of the drawing * * @param y the row */ public void setY(double y); /** * Accessor for the width of this drawing * * @return the number of columns spanned by this image */ public double getWidth(); /** * Accessor for the width * * @param w the number of columns to span */ public void setWidth(double w); /** * Accessor for the height of this drawing * * @return the number of rows spanned by this image */ public double getHeight(); /** * Accessor for the height of this drawing * * @param h the number of rows spanned by this image */ public void setHeight(double h); /** * Accessor for the type * * @return the type */ ShapeType getType(); /** * Accessor for the image data * * @return the image data */ public byte[] getImageData(); /** * Accessor for the image data * * @return the image data */ public byte[] getImageBytes() throws IOException; /** * Accessor for the image file path. Normally this is the absolute path * of a file on the directory system, but if this drawing was constructed * using an byte[] then the blip id is returned * * @return the image file path, or the blip id */ String getImageFilePath(); /** * Writes any other records associated with this drawing group object */ public void writeAdditionalRecords(File outputFile) throws IOException; /** * Writes any records that need to be written after all the drawing group * objects have been written */ public void writeTailRecords(File outputFile) throws IOException; /** * Accessor for the first drawing on the sheet. This is used when * copying unmodified sheets to indicate that this drawing contains * the first time Escher gubbins * * @return TRUE if this MSORecord is the first drawing on the sheet */ public boolean isFirst(); /** * Queries whether this object is a form object. Form objects have their * drawings records spread over TXO and CONTINUE records and * require special handling * * @return TRUE if this is a form object, FALSE otherwise */ public boolean isFormObject(); }